perm filename MP.FAI[XX,LCS] blob
sn#181396 filedate 1975-10-16 generic text, type T, neo UTF8
00100 C MPRNT.F4********** DRAWS MUSIC ON THE PLOTTER OR XGP **********
00200 C *** READS DATA FROM DSK FOR VARIOUS THINGS.
00300 C LOAD WITH PRNTX.DO
00400
00500 IMPLICIT INTEGER(A-Q,S-Z)
00600 REAL DIS,PWDS,DISX,A,B,STFF,CENTR,POS,BOT,TOP,TOP2
00700 COMMON /DL/IXRX,SAVER,NAME /FRMT/F78F(1),FA1(1),FA5(1),ASK
00950 C ↓↓↓↓↓ V IS FOR READIN ONLY
01000 COMMON /ALF/INP(72),ML /XRN/RN(3000),V(1000)
01050 1 /STF/RSTFAC(-3/4),RSTJ2 /PLTR/PLT,RHT,DIS
01150 1 /PTR/PWDS(250),ITEM,L,I,M /DPY/GO,TOP,BOT /FONT/JFONT
01250 COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20) /POSI/STFF(-3/4),JJ2,POS
01400 EQUIVALENCE (J3,JQ(1)),(J5,JQ(3)),(R5,RJQ(3))
01500 1,(R6,RJQ(4)),(R7,RJQ(5)),(R9,RJQ(7)),(J10,JQ(8))
01600 1,(R4,RJQ(2)),(R3,RJQ(1)),(I1,INP(1)),(R8,RJQ(6))
01900 DATA IP/'P'/,FA1/'( A1)'/
01910
01925 RPLT=-999.
01927 C RPLT WILL BE FOR HEAVY STAFF LINES.
01930 23 TYPE 21
01940 21 FORMAT(' RESET BOTTOM? '$)
01950 ACCEPT FA1,K
01960 IF(K.EQ.'A')GO TO 124
01970 IF(K.EQ.'P')GO TO 123
01980 C TYPE 'P' FOR PRIM FONT ONLY. 'A' FOR ALL, IF RESET IS NEEDED.
01985 GO TO 24
01990 123 JFONT=-1
02000 GO TO 23
02010 124 JFONT=0
02015 GO TO 23
02020 24 IF(K.EQ.'N')GO TO 22
02030 C 'Y' OR <CR>=ABSOLUTE LOW POINT OF FILE WILL BE AT
02040 C STARTING PEN POS.
02050 C 'N'= BOTTOM OF STAFF 0 WILL BE AT STARTING PEN POS.
02060 TOP2=-999
02080 MPRNT: 0
02090 MOVE 15,MPR+1 ; K
02100 CAIN 15,"N"
02110 JRST MP22
02120 MOVN [999.0]
02130 MOVEM TOP2#
02140 SETZM RNOMOV#
02150 MP22: SETZM ALF
02160 MP2: MOVE [999.0]
02170 MOVNM DPY+1 ;TOP
02180 MOVEM DPY+2 ;BOT
02200 RNOMOV=0
02300 22 I1=0
02400 C RESTART PROG. OR TYPE 'F' TO FINISH PLOTTER.(IT'S NOT AUTOMATIC.)
02700 2 TOP=-999
02800 BOT=999
02900 20 PLT=0
02910 PLOTIT=0
02920 MP20: SETZM PLTR
02930 SETZM PLOTIT#
02940 SETOM EDX#
02950 MOVEI 1,1
02960 MOVEM 1,PTR+=253 ; M
02970 JRST MP5504
03000 CC PWDS(1)=1.
03100 EDX=-1
03200 CC DO 1402 K=-3,4
03300 CC1402 RSTFAC(K)=1.
03400 M=1
03500 CC ITEM=0
03700 CC I=1
03900 GO TO 5504
04000
04100
04200 11 CALL NOTWRT
04210 MP11: JSA 16,NOTWRT
04220 MP57: SKIPGE PLTR
04230 JRST MP6120
04240 AOS PTR+=250 ;ITEM
04250 MOVN EDX
04260 CAIN 1
04270 JRST MP77
04280 MOVE PTR+=253 ; M
04290 CAMGE PTR+=252 ; I
04295 JRST MP6120
04300 57 IF(PLT)GO TO 6120
04400 ITEM=ITEM+1
04500 IF(EDX.EQ.-1)GO TO 77
04550 IF(M.LT.I)GO TO 6120
04600 77 IF(PLOTIT.EQ.-2)GO TO 2311
04700
04710 MP77: MOVN PLOTIT
04720 CAIN 2
04730 JRST MP2311
04740 MP5504: MOVEI "P"
04750 CAMN ALF
04760 JRST MP2311
04770 MOVEM ALF
04780 MOVEI "X"
04790 MOVEM ALF+1
05000
05100 5504 IF(I1.EQ.IP)GO TO 2311
05320 I1=IP
05340 INP(2)='X'
05400 311 JA=0
05500 MP311: SETZM .COMM.+1 ; JA
05510 MP2311: JSA 16,PLTCMD
05520 MOVE PLOTIT
05530 JUMPE MP3005
05540 MOVEI "P"
05550 MOVEM ALF
05560 SETOM PLOTIT
05600 2311 CALL PLTCMD
05700 IF(PLOTIT.EQ.0)GO TO 3005
05800 I1=IP
05900 PLOTIT=-1
06000 C 'PXG' OR 'PXC' GOES TO 'PLOT COMMAND' ROUTINE
06200
06300 6531 M=1
06310 MP6531: MOVEI 1
06320 MOVEM PTR+=253 : M
06330 SETOM EDX
06340 SETZ 1, ; K
06350 MP5532: MOVE 4,.COMM.+4(1)
06360 FIXX(4)
06370 MOVEM 4,.COMM.+=24(1)
06380 CAIGE 1,=8
06390 AOJA 1,MP5532
06400 EDX=-1
06500 DO 5532 K=1,9
06600 5532 JQ(K)=RJQ(K)
06700 SETO 2,
06710 CAMN 2,PLOTIT
06720 JRST MP5121
06750 IF(PLOTIT.EQ.-1)GO TO 5121
06800 590 I1=0
07000 C TO RUN THROUGH DATA.
07200 MP590: SETZM ALF
07210 MOVE [999.0]
07220 MOVNM DPY+1
07230 MOVEM DPY+2
07240 MP85: MOVEI 1m
07250 MOVEM PTR+=253
07260 SETZM PTR+=250
07500 TOP=-999
07600 BOT=999
07700 C GOES TO PLOTTER
07800 85 M=1
07900 CC I=PWDS(ITEM+1)
08000 ITEM=0
08100 8852 PLT=1
08110 MP8852: MOVEI 1
08120 MOVEM PLTR
08130 SETZM EDX
08140 JRST MP6120
08200 EDX=0
08400 GO TO 6120
08500
08600 60 J2=R2
08700 MP60: MOVE 1,.COMM.
08710 FIXX(1)
08720 MOVEM 1,.COMM.+3 ; J2
08730 MOVE 2,STF-1(1) ; RSTFAC(J2)
08740 MOVEM 2,STF+=8 ; RSTJ2
08750 MOVE 2,POSI-1(1)
08760 MOVEM 2,POSI+=9 ; POS
08770 JSA 16,RHORZ
08780 JUMP .COMM.+4 ; R3
08790 FIXX(0)
08800 MOVEM .COMM.+=24 ; J3
08810 JSA 16,CENTX
08820 MOVE 3,.COMM.+=24
08830 TLC 3,232000
08840 FADR 3,3
08850 MOVEM 3,.COMM.+4
08860 MOVE 1,.COMM.+1
09050 RSTJ2=RSTFAC(J2)
09100 5541 POS=STFF(J2)
09110 IF(JA.NE.16)GO TO 61
09120 IF(J10.NE.1)GO TO 62
09130 R3=RWD3
09135 C POSITIONS TEXT ITEMS.
09140 62 RWD3=R5*RSTJ2*R9+R3
09200 61 J3=ROFF(RHORZ(R3))
09300 C LINE IS DIVIDED INTO 200 POINTS.
09400 CALL CENTX
09434 C SETS VERT.(CENTR) POSITION BASED ON STAFF AND R4
09468 R3=J3
09501
09502 IF(JA.LE.2)GO TO 11
09536 551 GO TO(11,11,68,25,67, 25,116,125,11,69, 68,67),JA
09570 GO TO (116,81,80),JA-15
09604 C FOR 16,17,18 (WORDS, KSIG, METER)
09808
09842 69 CALL MAKNUM(R5)
09876 GO TO 57
09910
09944 68 CALL CLEFS
09978 GO TO 57
10012
10046 67 CALL SLUR
10080 GO TO 57
10114
10148 116 CALL ALPHA
10182 GO TO 57
10216
10250 81 CALL KSIG
10284 GO TO 57
10318
10352 80 CALL METER
10386 GO TO 57
10520 125 IF(R2.EQ.0)RMOV=R8
10556 25 CALL ITMSUB
10590 C BAR LINES, BEAMS, STAFF LINES ****
10624 GO TO 57
10770
10780 JRST .+0(1)
10790 JRST MP11
10800 JRST MP11
10810 JRST MP68
10820 JRST MP25
10830 JRST MP67
10840 JRST MP25
10850 JRST MP116
10860 JRST MP125
10870 JRST MP11
10880 JRST MP69
10890 JRST MP69
10900 JRST MP67
10910 0
10920 0
10930 0
10940 JRST MP116
10950 JRST MP81
10960 JSA 16,METER
10970 JRST MP57
11100
11200 3005 REWIND 21
11300 C GUARDS AGAINST LOSSAGE!
11350 IF(RPLT.EQ.-999.)RPLT=R9
11360 C R9=1 FOR HEAVY STAFF LINES. (FOR XGP)
11400 PLOTIT=-2
11500 CALL IFILE(21,NAME)
11600 C JUMP TO READ BIG FILES
11700 CC2200 J=ITEM+1
11800 2202 READ(21),ITEM,I,(PWDS(K),K=1,ITEM+1),(RN(K),K=1,I-1)
11900 1 ,JA,(V(K),K=1,JA),JA,(V(K),K=1,JA),RSTFAC,STFF
12000 READ(21,END=2203)RSTFAC,STFF
12005 2203 IF(I.LE.2000)GO TO 590
12120 TYPE 4202,Y
12130 STOP
12140 4202 FORMAT(' ***** TOO MUCH DATA ',I4,'/2000')
12500 121 IF(PLOTIT.EQ.0)GO TO 5504
12600 5121 CALL PLTSRT
12700 C IF P5=0 MOVES UP AT START, IF P6=0 MOVES UP AT END.
12800 PLT=-1
12850 IF(RPLT.NE.0)PLT=-2
12900 C (J8) P8=1 OR 2 FOR 2-PASS PLOTS
13200 CC IF(R2.EQ.0)R2=1.
13210 CALL NOZERO(R2)
13300 DIS=R2*1.24
13400 CXX IF(R3.EQ.0)R3=R2
13500 RHT=R3*1.2
13600 C 1.24 AND 1.2 ARE TO FIT 8 1/2 X 11 FORMAT
13700 BOT=-BOT*RHT
13710 CX IXGP=100+BOT
13800 IF(TOP2.EQ.-999)GO TO 8121
13900 BOT=BOT+TOP2
13950 IF(TOP2.EQ.0)BOT=0
14000 GO TO 9121
14200 8121 RNOMOV=0
14228 9121 IF(R7.EQ.0)R7=RMOV
14237 C RMOV HAS INCHES FROM P8 OF STAFF 0.
14246 IF(RNOMOV.GT.1)BOT=RNOMOV
14255 RNOMOV=R6+R7*200.*R3
14273 RMOV=0
14400 C R6=1 FOR NO MOVE AT END. R7=# OF INCHES TO MOVE FOR NEW STAFF 0.
14600 C (J4) P4=1 FOR XGP OUTPUT
14720 IF(J5.NE.0)GO TO 6120
15000 C MOVES 0 POINT OVER EACH TIME.
15200 6121 CALL PLOT(0,IFIX(BOT),-3)
15300 C MOVES PLOTTER UP IF P5=0.
15500
15600 C NEXT RUNS THROUGH DATA WITH NEW CHANGES.
15700 6120 IF(M.GE.I)GO TO 7120
15800 CALL RUNTHR(M)
17050 GO TO 60
17100
17200 7120 M=1
17300 CZ IF(EDX)GO TO 71201
17400 CZ IF(PLT.EQ.1)EDX=-1
17500 CZ PLT=0
17600 C RETURNS FOR 'SL'=SAVE LAST
17700 CZ GO TO 5504
17950 71201 A=TOP*RHT+50.*RHT
18000 IF(RNOMOV.NE.0)A=0
18100 IF(RNOMOV.GT.1)A=RNOMOV
18200 CALL PLOT(0,IFIX(A),3)
18225 IF(RNOMOV.EQ.1)GO TO 20
18237 C PRESERVES TOP AND BOT IF RNOMOV
18250 CX CALL PLOT(0,TOP+IXGP,3)
18275 TOP=A
18300 TOP2=TOP
18400 GO TO 2
18500 C TO MOVE 'PLOTTER' FOR XGP OUTPUT
18600 C MOVES PLOTTER UP
18700 C ALWAYS START PLOT WITH BOTTOM UNIT ON PAGE AND WORK UP.
18800
19000 END